package com.xxkfz.aspect.lock;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @program: xxkfz-admin-redisson
 * @ClassName RedissonLock.java
 * @author: 公众号：小小开发者
 * @create: 2024-01-20 09:58
 * @description: 自定义实现分布式锁注解
 * @Version 1.0
 **/
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface RedissonLock {

    /**
     * 分布式锁的 key，必须保持唯一性，支持 spring el表达式
     *
     * @return
     */
    String lockKey() default "";

    /**
     * 锁的自动释放时间
     *
     * @return
     */
    int leaseTime() default 10;

    /**
     * 时间单位，默认：秒
     *
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;


    /**
     * 错误提示信息
     *
     * @return
     */
    String errMsg() default "系统正在处理中，请稍后再试!";

    /**
     * 等待获取锁的最大时间量
     *
     * @return
     */
    int waitTime() default 1;

}